//package com.chetubao.controller;
//import com.payment.entity.Account;
//import com.payment.service.AccountService;
//import com.chetubao.util.Alipay;
//import com.chetubao.util.Config;
//import com.chetubao.util.TokenUtil;
//import org.solar.bean.JsonResult;
//import org.solar.bean.Token;
//import org.solar.coder.RsaCoder;
//import org.solar.util.JsonUtil;
//import org.solar.util.StringUtil;
//import org.solar.wechat.WeChatPublicService;
//import org.solar.wechat.WeChatWebOAuth;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import javax.annotation.Resource;
//import java.util.Date;
//import java.util.Map;
//
//@Controller
//public class WebOAuthController {
//    RsaCoder rsaCoder = new RsaCoder(Config.rsaPrivateKey, Config.rsaPublicKey);
//
//    private WeChatWebOAuth weChatWebOAuth=new WeChatWebOAuth(Config.wechatAppId,Config.wechatSecret);
//    private WeChatPublicService weChatPublicService=new WeChatPublicService(Config.wechatAppId,Config.wechatSecret);
//    private Alipay alipay = new Alipay(Config.alipayAppId, Config.alipayPublicKey,
//            Config.alipayRsaPrivateKey, Config.alipayNotifyUrl, Config.alipayReturnUrl);
//
//    @Resource
//    private AccountService accountService;
//
//    @RequestMapping("getWechatJsSdkConfig")
//    @ResponseBody
//    public Object getJsSdkConfig(String url) throws Exception {
//        return JsonResult.success(weChatPublicService.getJsSdkConfig(url));
//    }
//    @RequestMapping("redirect")
//    public Object wechatRedirect(String url,String uri) throws Exception {
//        if (uri!=null&&!"".equals(uri)){
//            url=Config.baseHost+uri;
//        }
//         return "redirect:"+url;
//    }
//    @RequestMapping("wechatLogin")
//    public Object wechatLogin(String url) throws Exception {
//        String loginUrl=weChatWebOAuth.getOauthBaseUrl(Config.baseHost+"/getOpenIdByWechatCode",url);
//        return "redirect:"+loginUrl;
//    }
//    @RequestMapping("getOpenIdByWechatCode")
//    public Object getAccessTokenByCode(String code,String state) throws Exception {
//        String result=weChatWebOAuth.getAccessTokenByCode(code);
//        Map resultMap=JsonUtil.parseObject(result);
//        String openid=(String)resultMap.get("openid");
//        if (StringUtil.isEmpty(openid)){
//            return null;
//        }
//        Account account=accountService.selectOneByWhere("wechatOpenId",openid);
//        if (account==null){
//            account=new Account();
//            account.setWechatOpenId(openid);
//            //角色1=管理2=代理商3=业务员4=商户5=普通用户
//            account.setRole(5);
//            account.setRegisterTime(new Date());
//            account.setLastLoginTime(account.getRegisterTime());
//            accountService.save(account);
//        }
//        Token token=new Token();
//        token.setId(account.getId());
//        token.setType(account.getRole());
//        //秒单位
//        token.setExpireTime(60 * 60 * 24 * 120);
//
//        if(!state.contains("?")){
//            state+="?";
//        }else if (!state.endsWith("?")){
//            state+="&";
//        }
//        String redirectUrl=state+"token="+ TokenUtil.toString(token);
//        System.out.println(redirectUrl);
//        return "redirect:"+redirectUrl;
//    }
//
//
//    @RequestMapping("alipayLogin")
//    public Object alipayLogin(String url) throws Exception {
//        String alipayLoginUrl=alipay.getOauthUrl( Config.baseHost+"/getUserIdByAlipayCode",url);
//        return "redirect:"+alipayLoginUrl;
//    }
//    @RequestMapping("getUserIdByAlipayCode")
//    public Object getUserIdByAlipayCode(String auth_code,String state) throws Exception {
//        String userId=alipay.getUserIdByAuthCode(auth_code);
//        if (StringUtil.isEmpty(userId)){
//            return null;
//        }
//        Account account=accountService.selectOneByWhere("alipayUserId",userId);
//        if (account==null){
//            account=new Account();
//            account.setAlipayUserId(userId);
//            account.setRole(5);
//            account.setRegisterTime(new Date());
//            account.setLastLoginTime(account.getRegisterTime());
//            accountService.save(account);
//        }
//        Token token=new Token();
//        token.setId(account.getId());
//        token.setType(account.getRole());
//        //秒单位
//        token.setExpireTime(60 * 60 * 24 * 120);
//        if (state==null){
//            state="/";
//        }
//        if(!state.contains("?")){
//            state+="?";
//        }else if (!state.endsWith("?")){
//            state+="&";
//        }
//        return "redirect:"+state+"token="+ TokenUtil.toString(token);
//    }
//
//
//}
